%% Copyright (C) 2008, Liu Yubao. All rights reserved.

\startcomponent arch
\product ebbs-dev

\chapter{系统架构}

\section{术语定义}

\definedescription[term][location=serried,headstyle=bold,width=broad]
\term{主机} 单台计算机。
\term{节点} 提供服务和访问服务的单元，可以是单个主机，也可以是多个
            主机，后者指这多个主机处于一个可信网络中组成集群，对外
            看来像是单个主机。
\term{服务端} 节点中提供服务的程序。
\term{客户端} 节点中访问服务的程序。
\term{BBS 网络} 众多参与 BBS 服务的节点组成的虚拟网络。
\term{用户} BBS 网络中的一个标识符，用来标志一个用户，一般对应到
            现实生活中唯一的某个人。


\section{网络结构}

用户通过客户端访问 BBS 服务，这个客户端位于用户所登录的节点上。

服务端有两种角色：直接为用户提供服务和间接提供服务，后者指某个
服务端向其它服务端请求数据，然后返回给客户端，以达到屏蔽 BBS
服务的分布式特性的目的。

服务端可以位于用户所登录的节点上，也可以位于专用于提供服务的节点
上。


\section{信任关系}

用户依据自己的主观判断赋予每一个节点信任度，因此信任是相对的
和动态的。

客户端在连接非同一主机上的服务端时，用户需要做出是否信任的判断；
某一服务端连接其它服务端时，服务端所有者需要做出是否信任的判断，
此时发起连接的服务端表现为一个客户端。

为了简化使用，用户可以设置信任规则，默认情况下程序应该总是不信任
其它节点。

每一个用户用一对公钥、私钥标志身份，使用 BBS 系统时，这对公钥私钥
被赋予给客户端，用来向服务端表明身份。某个服务端在连接其它服务端
时，发起连接的服务端使用服务端所有者赋予的公钥私钥表明身份
\footnote{如果这套信任关系能够实现，那么可以在其上构建商业应用，信任度
也就转化为信用额:-)}。

接受连接的服务端应首先用服务端所有者赋予的公钥私钥表明身份。

由于私钥可能暴露，而公钥私钥对标志了一个用户，因此用户在改变公钥私钥
时需要用其它方式向其它用户表明身份(比如电话口头通知)，以恢复之前累积
的信任度。

\stopcomponent

